# 数据库工具类
import pymysql


class DBTools:
    # 建立连接 - 类方法
    @classmethod
    def __get_conn(cls):
        conn = pymysql.connect(host='47.108.206.100', port=3306, user='student', password='stu2022',
                               database='mall', charset='utf8')
        return conn

    # 查询一条记录 - 类方法
    @classmethod
    def select_one(cls, sql):
        conn = None
        cursor = None
        res = None
        try:
            # 调用 自己封装的 建立连接 的方法，得到一个 conn
            conn = cls.__get_conn()
            # 获取 游标
            cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
            # 执行 用户 指定的 查询 sql
            cursor.execute(sql)
            # 获取结果
            res = cursor.fetchone()
        except Exception as err:
            print("执行SQL查询一条记录时，报错：", str(err))
        finally:
            # 关闭资源
            cursor.close()
            conn.close()
            # 返回 查询结果给 用户
            return res

    @classmethod
    def uid_db(cls, sql):
        conn = None
        cursor = None
        try:
            # 调用 自己封装的 建立连接 的方法，得到一个 conn
            conn = cls.__get_conn()
            # 获取 游标
            cursor = conn.cursor()
            # 执行 用户 指定的 查询 sql
            cursor.execute(sql)
            # 提交事务
            conn.commit()
            print("Affected rows:", conn.affected_rows())
        except Exception as err:
            print("执行SQL增删改数据库，报错：", str(err))
            # 回滚事务
            conn.rollback()
        finally:
            # 关闭资源
            cursor.close()
            conn.close()


if __name__ == '__main__':
    # 直接使用 类名.方法名 调用类方法。
    # res = DBTools.select_one("select * from student")
    #
    # 接收的结果，打印查看
    # print("res = ", res)
    ...
    stock_sql = """select stock from pms_sku_stock where id=99"""
    # 购买前的商品库存
    res = DBTools().select_one(stock_sql)
    print(res)